<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <!-- 
        对象：见得见，摸得着，具体的某一个东西
        对象的特征和行为：
        创建对象：
        1.调用系统的构造函数创建对象
        var  变量名=new Object（）
        var obj=new Object（）

        添加属性-------对象.名字=值
        obj.name=“小苏”；

        添加方法------对象.名字=函数
        obj.eat=function（）{
            console.log（“我喜欢吃油条”）；
        }


        属性的输出：console.log（obj.name）
        行为的调用：obj.eat（）；



        2.自定义构造函数创建对象（）函数名的首字母需要大写
        function 函数名(){

        }


        3.字面量的方式创建对象
    
    -->


    <script>
        // var stu=new Object();

        // function createObject(name,age){
        //     var obj=new Object();
        //     obj.name=name;
        //     obj.age=age;
        //     return obj;
        // }
        // console.log(createObject("xiao",12));


        // function Person(name,age){
        //     this.name=name;
        //     this.age=age;
        // }
        // var per1=new Person("122",02);
        // console.log(per1 instanceof Person);


        /*
        对象：有属性和方法，特指的某个事物
        对象：一组无序属性的集合{属性的值可以是任意的类型---数值，字符串，布尔值，函数}
       
        */


        /*
        json也是对象只不过需要
        
        */
        //     var json={
        //         "name":"小明",
        //         "age ":"10",
        //         "sex":"男"
        //     }
        //    for(var key in json){
        //        console.log(key+"是"+json[key]);
        //    }



        /*
    编程的思想：
    面向过程：凡事亲力亲为。所有的事情的过程都要清楚，注重的是过程
    面向对象：提出需求，找到对象，对象解决这个问题，我们要结果，注重的是结果
    面向对象的特性：封装，继承，多态，（抽象性）


    JS是一门什么样的语言：
    是一门解释性的语言
    是一门脚本语言
    是一门弱类型的语言
    是一门基于对象的语言
    是一门动态的语言



    对象：有属性和方法，具体特指的某个事物
    对象：js中就是一组无序的属性的集合
    属性----特征
    方法----行为
    创建的对象的方式：
    1.通过调用系统的构造函数创建对象  new object （）
    var obj1=new object（）；
    2.自定义构造函数创建对象
    var obj2=new 自定义构造函数（）；
    3.字面量的方式创建对象
    var obj3={}；
    变量 instanceof 对象----布尔类型，判断这个变量是不是这个类型的


    JSON格式的数据，都是键值对，成对的数据 
    var obj4={
        name：“小明”；
    }

    var json={
        “name”：“小明”
    }


    json的数据实际上就是格式化后的一组字符串的数据

    对象的设置属性的值的写法
    对象.属性名字=值



    遍历对象
    for （var key in 对象）{
        key是一个变量，这个变量中存储的是遍历的对象的属性的名字
    }

    原始的数据类型：number，string，Boolean，null，undefined，object
    基本数据（简单类型，值类型）：number，string，Boolean
    复杂型（引用类型）：object
    空类型：null，undefined

    基本类型的值在栈上
    复杂类型的对象在堆上，地址（引用）在栈上

    值类型之间传递的是值
    引用类型之间传递的是引用（地址）


    对象分三种：内置对象，自定义对象，浏览器对象
    内置对象：系统提供的
    自定义对象：自己写的
    浏览器对象：浏览器的


    math是一个对象，但是不是一个函数
    math对象下的属性和方法都是静态的

    方法：
    math.ceil（）---向上取整
    math.floor（）---向下取整
    math.max（）--一组数字中的最大值
    math.min（）---一组数字中的最小值
    math.abs（）----一个数的绝对值
    math.PI---圆周率的值
    math.random---随机数
    math.sqrt（）----开平方
    math.pow（）----一个数字的多少次幂

new 的执行过程:----->new的时候，系统做了什么事?
      1. 开辟空间,存储创建的新的对象
      2. 把this设置为当前的对象
      3. 设置属性和方法的值
      4. 返回当前的新的对象




    
    */
    </script>
</body>

</html>